[アップデート] AWSアカウントのリージョン管理(有効化/オプトイン無効化)が AWS CLI/SDK で出来るようになりました
2023/6追記)本記事ではリリース情報にならい「オプトインリージョン」と表現していますが、一部AWSサービス(例:AWS Control Tower)で指すそれと一致しない可能性があるのでご注意ください。AWS リージョンの管理 - AWS
どうも、ちゃだいん(@chazuke4649)です。
AWSアカウントのリージョン管理(有効化/オプトイン無効化)が AWS CLI/SDK で出来るようになりました
Programmatically manage enabled and disabled opt-in AWS Regions on AWS accounts
何が嬉しい?
aws account
コマンドのアップデート第2弾です。第1弾は以下ブログをどうぞ。
AWSアカウントで使用可能なリージョンには、比較的古くからある・デフォルト有効化で・無効化できないリージョン群と、比較的新しい・デフォルト無効化で・無効化できる(オプトイン)リージョン群があります。
以下は執筆時点のリージョンの管理画面の例です。
これらリージョンの管理や有効化・無効化の処理は、マネジメントコンソールでのみ実行可能でしたが、今回のアップデートで AWS CLI/SDK にて実行可能になりました。
さらに、Organizationsを使用している場合、Organization管理者は、管理アカウントを使用して、全てのメンバーアカウントのオプトインリージョンのステータスを一元管理できるようになりました。
やってみた
AWS CLI v1は 1.27.70
から利用可能です。(執筆時点ではv2はまだ追いついてませんが、そのうちv2も使えるようになるかと)
account — AWS CLI v1 Command Reference
account — AWS CLI v2 Command Reference
公式ドキュメントは以下を参考します。
Specifying which AWS Regions your account can use - AWS Account Management
1.自アカウントのリージョンのオプトインステータスの一覧を取得する
まずは account list-regions
コマンドで、自分のAWSアカウントのリージョンのオプトインステータスの一覧を取得します。
% aws-v1 account list-regions --output text REGIONS af-south-1 DISABLED REGIONS ap-east-1 DISABLED REGIONS ap-northeast-1 ENABLED_BY_DEFAULT REGIONS ap-northeast-2 ENABLED_BY_DEFAULT REGIONS ap-northeast-3 ENABLED_BY_DEFAULT REGIONS ap-south-1 ENABLED_BY_DEFAULT REGIONS ap-south-2 DISABLED REGIONS ap-southeast-1 ENABLED_BY_DEFAULT REGIONS ap-southeast-2 ENABLED_BY_DEFAULT REGIONS ap-southeast-3 DISABLED REGIONS ap-southeast-4 DISABLED REGIONS ca-central-1 ENABLED_BY_DEFAULT REGIONS eu-central-1 ENABLED_BY_DEFAULT REGIONS eu-central-2 DISABLED REGIONS eu-north-1 ENABLED_BY_DEFAULT REGIONS eu-south-1 DISABLED REGIONS eu-south-2 DISABLED REGIONS eu-west-1 ENABLED_BY_DEFAULT REGIONS eu-west-2 ENABLED_BY_DEFAULT REGIONS eu-west-3 ENABLED_BY_DEFAULT
--region-opt-status-contains
オプションで、指定したオプトステータスのリージョンのみ取得できます。
## ENABLED_BY_DEFAULT のみ % aws-v1 account list-regions --region-opt-status-contains ENABLED_BY_DEFAULT --output table -------------------------------------------- | ListRegions | +------------------------------------------+ || Regions || |+-----------------+----------------------+| || RegionName | RegionOptStatus || |+-----------------+----------------------+| || ap-northeast-1 | ENABLED_BY_DEFAULT || || ap-northeast-2 | ENABLED_BY_DEFAULT || || ap-northeast-3 | ENABLED_BY_DEFAULT || || ap-south-1 | ENABLED_BY_DEFAULT || || ap-southeast-1 | ENABLED_BY_DEFAULT || || ap-southeast-2 | ENABLED_BY_DEFAULT || || ca-central-1 | ENABLED_BY_DEFAULT || || eu-central-1 | ENABLED_BY_DEFAULT || || eu-north-1 | ENABLED_BY_DEFAULT || || eu-west-1 | ENABLED_BY_DEFAULT || || eu-west-2 | ENABLED_BY_DEFAULT || || eu-west-3 | ENABLED_BY_DEFAULT || || sa-east-1 | ENABLED_BY_DEFAULT || || us-east-1 | ENABLED_BY_DEFAULT || || us-east-2 | ENABLED_BY_DEFAULT || || us-west-1 | ENABLED_BY_DEFAULT || || us-west-2 | ENABLED_BY_DEFAULT || |+-----------------+----------------------+| ## DISABLED のみ % aws-v1 account list-regions --region-opt-status-contains DISABLED --output table ----------------------------------------- | ListRegions | +---------------------------------------+ || Regions || |+-----------------+-------------------+| || RegionName | RegionOptStatus || |+-----------------+-------------------+| || af-south-1 | DISABLED || || ap-east-1 | DISABLED || || ap-south-2 | DISABLED || || ap-southeast-3 | DISABLED || || ap-southeast-4 | DISABLED || || eu-central-2 | DISABLED || || eu-south-1 | DISABLED || || eu-south-2 | DISABLED || || me-central-1 | DISABLED || || me-south-1 | DISABLED || |+-----------------+-------------------+|
他にも、オプトインリージョンの有効化・無効化も実行可能です。
2.メンバーアカウントのオプトインリージョンのステータスを取得する
こちらのコマンドは、AWS Organizationsの管理アカウントにて、「AWS Account Managementの信頼されたアクセスが有効化になっている」場合のみ利用可能です。
Organizationsコンソールの以下画面にて確認・有効化できます。
メンバーアカウントIDの指定と、リージョンを指定すれば、以下のように取得できました。
% aws-v1 account get-region-opt-status --account-id 111111111111 --region-name af-south-1 { "RegionName": "af-south-1", "RegionOptStatus": "DISABLED" }
※アカウントIDはダミー値
以下のようにすれば、1つのリージョンに対して、全メンバーアカウントのオプトインステータスを取得することができました。
% aws organizations list-accounts --query "Accounts[].[Id]" --output text\ | while read account; do echo "${account} ..." aws-v1 account get-region-opt-status --account-id ${account} --region-name af-south-1 --output text done 111111111111 ... af-south-1 DISABLED 222222222222 ... af-south-1 DISABLED 333333333333 ... af-south-1 DISABLED 444444444444 ... af-south-1 DISABLED
※アカウントIDはダミー値
これで、プログラマブルに組織全体のアカウントのオプトインリージョンの確認ができるようになりました。
検証は以上です。